package com.zhongying.jf.util;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 李佳
 * @Description 根据Url下载文件
 * @Email lijia@chinazyjr.com
 */
public class DownloadFileUtils {


    /**
     * 根据地址获得数据的字节流
     * @param strUrl 网络连接地址
     * @return map = {"btFile" : (byte[])文件的二进制数据, "fileName" : (String)文件名}
     */
    public static Map getFileFromNetByUrl(String strUrl){
        try {
            URL url = new URL(strUrl);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5 * 1000);
            //通过输入流获取文件数据
            InputStream inStream = conn.getInputStream();
            //得到文件的二进制数据
            byte[] btFile = readInputStream(inStream);
            String fileName = strUrl.substring(strUrl.lastIndexOf("/") + 1, strUrl.length());
            Map map = new HashMap(16);
            map.put("btFile",btFile);
            map.put("fileName",fileName);
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 从输入流中获取数据
     * @param inStream 输入流
     * @return
     * @throws Exception
     */
    public static byte[] readInputStream(InputStream inStream) throws Exception{
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len=inStream.read(buffer)) != -1 ){
            outStream.write(buffer, 0, len);
        }
        inStream.close();
        return outStream.toByteArray();
    }

}
